#模型的保存
import torch
import torchvision
from torch import nn

vgg16 = torchvision.models.vgg16(pretrained=False)
#第一种保存方式1:这种保存方式不仅模型结构被保存下来了，模型参数也被保存下来了(保存模型+参数）
torch.save(vgg16,"vgg16_method1.pth")
#保存方式2：官方推荐的保存方式
torch.save(vgg16.state_dict(),"vgg16_method2.pth")#把vgg16网络的状态保存成字典格式，也就是把网络模型的参数保存成字典（保存参数）


#陷阱--->针对保存方式1
class MyModule(nn.Module):
    def __init__(self):
        super(MyModule, self).__init__()
        self.conv1 = nn.Conv2d(3,64,3)

    def forward(self,x):
        x = self.conv1(x)
        return x


mymodule = MyModule()
torch.save(mymodule,"mymodule_method1.pth")
